package com.eastfair.pay.vo;

import com.eastfair.annotation.annotation.dictionary.Dict;
import com.eastfair.annotation.annotation.vo.VoInfo;
import com.eastfair.pay.demand.InvoiceApplyGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.Size;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 实体类
 * 发票
 * </p>
 *
 * @author gj
 * @since 2022-06-21
 */
@Data
@ApiModel(value = "InvoiceUpdateDTO", description = "发票")
@VoInfo(groups = {InvoiceApplyGroup.all.class})
public class InvoiceVO implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "主键")
    private Long id;

    /**
     * 发票类型
     */
    @ApiModelProperty(value = "发票类型")
    @Size(max = 255, message = "发票类型长度不能超过255")
    private String invoiceType;
    /**
     * 发票代码
     */
    @ApiModelProperty(value = "发票代码")
    @Size(max = 255, message = "发票代码长度不能超过255")
    private String invoiceCode;
    /**
     * 发票号码
     */
    @ApiModelProperty(value = "发票号码")
    @Size(max = 255, message = "发票号码长度不能超过255")
    private String invoiceNum;
    /**
     * 发票金额
     */
    @ApiModelProperty(value = "发票金额")
    @Size(max = 255, message = "发票金额长度不能超过255")
    private String invoiceAmount;
    /**
     * 开票时间
     */
    @ApiModelProperty(value = "开票时间")
    private LocalDateTime invoicingTime;
    /**
     * 开票状态
     */
    @Dict(dicCode = "INVOICE_STATE")
    @ApiModelProperty(value = "开票状态 ")
    private String invoiceState;
    /**
     * 费用类型
     */
    @Dict(dicCode = "EXPENSE_TYPE")
    @ApiModelProperty(value = "费用类型")
    @Size(max = 255, message = "费用类型长度不能超过255")
    private String costType;
    /**
     * 经手人名称登录人所在部门所有人（默认当前登录人）
     */
    @ApiModelProperty(value = "经手人名称登录人所在部门所有人（默认当前登录人）")
    @Size(max = 255, message = "经手人名称登录人所在部门所有人（默认当前登录人）长度不能超过255")
    private String applicantName;

    @ApiModelProperty(value = "是否冲红")
    private Integer isFlushRed;

    /**
     * 原发票代码
     */
    @ApiModelProperty(value = "原发票代码")
    private String sourceInvoiceCode;
    /**
     * 发票号码
     */
    @ApiModelProperty(value = "原发票号码")
    private String sourceInvoiceNum;

    /**
     * 电子发票链接
     */
    @ApiModelProperty(value = "电子发票链接")
    private String invoiceLink;

}
